#pragma once

#include <string>
#include "IGUIElement.h"
#include "HashedString.h"
#include "Functor.h"

class GUIButton : public IGUIElement
{
public:
	GUIButton();
	void Paint();
	void Text( std::string& title );
	std::string Text() const;
	void Font( std::string& font );
	void Font( HashedString& font );
	HashedString Font() const;
	void FontColor( unsigned int color );
	unsigned int FontColor() const;
	void Background( std::string& background );
	void Background( HashedString& background );
	HashedString Background() const;
	bool ReceiveEvent( IEvent& event );
	void ClickFunction( Pointer<Functor>& function );
	unsigned int BackgroundColor();
	void BackgroundColor( unsigned int color );
protected:
	unsigned int m_backgroundColor;
	HashedString m_background;
	Pointer<Functor> m_clickFunction;
	HashedString m_font;
	unsigned int m_fontColor;
	std::string m_text;
};